home *** CD-ROM | disk | FTP | other *** search
/ Precision Software Appli…tions Silver Collection 1 / Precision Software Applications Silver Collection Volume One (PSM) (1993).iso / tutor / cptuts22.arj / TIME.CPP < prev    next >
C/C++ Source or Header  |  1992-01-20  |  3KB  |  100 lines

  1.                                 // Chapter 6 - Program 11
  2.  
  3. #include <stdio.h>         // For the sprintf function
  4. #include <time.h>          // For the time & localtime functions
  5. #include "time.h"          // For the class header
  6.  
  7.  
  8. char time_of_day::format;  // This defines the static data member
  9. char time_of_day::out_string[25];  // This defines the string
  10.  
  11.  
  12.          // Constructor - Set time to current time
  13.          //               and format to 1
  14. time_of_day::time_of_day(void)
  15. {
  16. time_t time_date;
  17. struct tm *current_time;
  18.  
  19.    time_date = time(NULL);
  20.    current_time = localtime(&time_date);
  21.    hour     = current_time->tm_hour;
  22.    minute   = current_time->tm_min;
  23.    second   = current_time->tm_sec;
  24.  
  25.    format   = 1;
  26. }
  27.  
  28.  
  29.          // Set the time to these input values
  30.          //  return = 0 ---> data is valid
  31.          //  return = 1 ---> something out of range
  32. int time_of_day::set_time(void)         {return set_time(0, 0, 0); };
  33. int time_of_day::set_time(int H)        {return set_time(H, 0, 0); };
  34. int time_of_day::set_time(int H, int M) {return set_time(H, M, 0); };
  35. int time_of_day::set_time(int hour_in, int minute_in, int second_in)
  36. {
  37. int error = 0;
  38.  
  39.    if (hour_in < 0) {
  40.       hour_in = 0;
  41.       error = 1;
  42.    } else if (hour_in > 59) {
  43.       hour_in = 59;
  44.       error = 1;
  45.    }
  46.    hour = hour_in;
  47.  
  48.    if (minute_in < 0) {
  49.       minute_in = 0;
  50.       error = 1;
  51.    } else if (minute_in > 59) {
  52.       minute_in = 59;
  53.       error = 1;
  54.    }
  55.    minute = minute_in;
  56.  
  57.    if (second_in < 0) {
  58.       second_in = 0;
  59.       error = 1;
  60.    } else if (second_in > 59) {
  61.       second_in = 59;
  62.       error = 1;
  63.    }
  64.    second = second_in;
  65.  
  66.    return error;
  67. }
  68.  
  69.  
  70.  
  71.          // Return an ASCII-Z string depending on the stored format
  72.          //   format = 1    13:23:12
  73.          //   format = 2    13:23
  74.          //   format = 3     1:23 PM
  75. char *time_of_day::get_time_string(void)
  76. {
  77.    switch (format) {
  78.       case 2  : sprintf(out_string, "%2d:%02d", hour, minute);
  79.                 break;
  80.  
  81.       case 3  : if (hour == 0)
  82.                    sprintf(out_string, "12:%02d AM", minute);
  83.                 else if (hour < 12)
  84.                    sprintf(out_string, "%2d:%02d AM", hour, minute);
  85.                 else if (hour == 12)
  86.                    sprintf(out_string, "12:%02d PM", minute);
  87.                 else
  88.                    sprintf(out_string, "%2d:%02d PM",
  89.                                                  hour - 12, minute);
  90.                 break;
  91.  
  92.       case 1  : // Fall through to default so the default is also 1
  93.       default : sprintf(out_string, "%2d:%02d:%02d",
  94.                                                hour, minute, second);
  95.                 break;
  96.    }
  97.  
  98.    return out_string;
  99. }
  100.